package com.jinzhi.jzweb.utils;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class PageLogicalUtil {
    /**
     * 执行逻辑分页。
     *
     * @param allData    所有数据列表
     * @param pageNumber 页码（从1开始）
     * @param pageSize   每页大小
     * @param <T>        数据类型
     * @return 分页后的数据列表
     */
    public static <T> List<T> logicalPaginate(List<T> allData, int pageNumber, int pageSize) {
        if (allData == null || allData.isEmpty()) {
            return Arrays.asList();
        }
        // 计算起始索引，注意Java中的List索引是从0开始的
        int start = (pageNumber - 1) * pageSize;

        // 验证起始索引是否有效
        if (start < 0 || start >= allData.size()) {
            return Arrays.asList(); // 如果起始索引无效，返回空列表
        }

        // 计算结束索引，不超过数据总数
        int end = Math.min(start + pageSize, allData.size());

        // 使用 subList 方法进行分页
        return allData.subList(start, end);
    }

}
